set working directory to source file location
Load metadata - Strain_Data_raw: Metadata Strains with Plate Layout (indicating which strain is in which well) - database: All information about the strains (Taxonomy, AMPO Formation, isolation etc.)
Data from the different runs are merged, then the time intervals between the measurements are calculated and last then the results are joined with the strain metadata of the strains. Next the density increase is calculated by subtracting the first measurement (represents inoculation density) from all subsequent measurements. This result data file is saved as raw results.
First the density increase in the medium control plate is plotted to check that there was no general contamination detected in the experiment.
Next the growth of all strains in the control treatment and the no bacteria control is checked.
Here the growth of two bacterial strains in one run in 6 concnetrations of MBOA and the control treatment are plotted. Pseudomonas LPD2 is MBOA-tolerant whil LRH8.O is MBOA susceptible.
For some strains bad growth was detected in the growth curves. Here some strains are removed due to bad growth (LAR4, LPA11, LPE13 - LPE1.3.1), possible contamination (LMX8), unclear taxonomy (LMR1) and antibiotic tolerant strains (LPB4.R and LRH.8) are removed from the analysis. Also the data for the screen in minimal medium are removed from the analysis since this was not the interest of this screen.
The maximal density increase maxDI is calculated from the maximal OD600 value of a strain in a given concentration of the compound (highest OD value reached over growth curve).
To quantify the total bacterial growth over time, we calculate the total area under the curve. This is done with the function “auc()” For comparison between treatments, the total AUC (AUC_raw) is normalized with the AUC of the strain grown in the control treatment (no chemicals added, just normal growth media with DMSO). The AUC_norm is used for all further analysis, plotting and calculations.
AUC MBOA
AUC AMPO
AUC BOA
AUC DMG
AUC APO
Combine all AUC results in one dataset
Figures for supplement
All AUC MBOA
AUC tolerant and susceptible strain in MBOA
All AUC BOA
All AUC AMPO
All AUC APO
All AUC DIMBOA-Glc
Compare low MBOA concentrations with high AMPO concentrations [50 uM]
To investigate how many strains are susceptible to low concentrations of MBOA and AMPO (50 μM). We check for the number of strains with AUC_norm < 0.8 and statistically test (t.test) which bacteria grow significantly less in the treatment compared to the control.
MBOA
| Strain |
|---|
| LWO6 |
| Strain |
|---|
| LST15 |
| LWO6 |
AMPO
## # A tibble: 20 × 3
## # Groups: Strain [20]
## Strain Chem_Conc AUC_norm_mean
## <chr> <fct> <dbl>
## 1 LAR21 AMPO_50 0.492
## 2 LBA1 AMPO_50 0.572
## 3 LBA112 AMPO_50 0.602
## 4 LBA20 AMPO_50 0.484
## 5 LBA21 AMPO_50 0.679
## 6 LBA3 AMPO_50 0.213
## 7 LBA71 AMPO_50 0.640
## 8 LMA1 AMPO_50 0.486
## 9 LMC3 AMPO_50 0.625
## 10 LMD1 AMPO_50 0.738
## 11 LME1 AMPO_50 0.782
## 12 LME2 AMPO_50 0.781
## 13 LMI13 AMPO_50 0.718
## 14 LMJ1 AMPO_50 0.0378
## 15 LML1 AMPO_50 0.357
## 16 LMN1 AMPO_50 0.746
## 17 LMO1 AMPO_50 0.707
## 18 LMX3 AMPO_50 0.773
## 19 LPA2 AMPO_50 0.162
## 20 LSP13 AMPO_50 0.759
| Strain |
|---|
| LAC11 |
| LBA112 |
| LBA20 |
| LMB2 |
| LMD1 |
| LME1 |
| LME3 |
| LMI1 |
| LMI11 |
| LMI13 |
| LMJ1 |
| LML1 |
| LMO1 |
| LMS1 |
| LMX3 |
| LMX9231 |
| LMY1 |
| LMZ1 |
| LPA2 |
| LPB4.O |
| LPE13 |
| LRH11 |
| LSP13 |
| LWO6 |
| Strain |
|---|
| LAR21 |
| LBA1 |
| LBA112 |
| LBA20 |
| LBA21 |
| LBA3 |
| LBA71 |
| LMA1 |
| LMB2 |
| LMC3 |
| LMD1 |
| LME1 |
| LME2 |
| LMI1 |
| LMI11 |
| LMI13 |
| LMI15 |
| LMI1x |
| LMJ1 |
| LML1 |
| LMN1 |
| LMO1 |
| LMS1 |
| LMX3 |
| LMX7 |
| LPA2 |
| LRH11 |
| LRH8.O |
| LSP13 |
| LST14 |
| LWO6 |
xy Plot AMPO ~ MBOA 50 uM
To investigate how many strains are susceptible to high concentrations of MBOA and BOA (2500 μM). We check for the number of strains with AUC_norm < 0.75 and statistically test (t.test) which bacteria grow significantly less in the treatment compared to the control.
## # A tibble: 42 × 1
## # Groups: Strain [42]
## Strain
## <chr>
## 1 LAC11
## 2 LAR21
## 3 LBA20
## 4 LBA21
## 5 LMA1
## 6 LMB2
## 7 LMC1
## 8 LMC3
## 9 LMD1
## 10 LME1
## # ℹ 32 more rows
| Strain |
|---|
| LBA1 |
| LBA3 |
| LBA71 |
| LMB2 |
| LME1 |
| LME2 |
| LMI11 |
| LMJ1 |
| LMX9 |
| LMY1 |
| LPB4.O |
| LPD11 |
| LPD2 |
| LPE13 |
| Strain |
|---|
| LAC11 |
| LAR21 |
| LBA1 |
| LBA112 |
| LBA20 |
| LBA21 |
| LBA3 |
| LMI1x |
| LMJ1 |
| LST15 |
`
## # A tibble: 42 × 1
## # Groups: Strain [42]
## Strain
## <chr>
## 1 LAC11
## 2 LAR21
## 3 LBA20
## 4 LBA21
## 5 LMA1
## 6 LMB2
## 7 LMC1
## 8 LMC3
## 9 LMD1
## 10 LME1
## # ℹ 32 more rows
## # A tibble: 19 × 3
## # Groups: Strain [19]
## Strain Chem_Conc AUC_norm_mean
## <chr> <fct> <dbl>
## 1 LAC11 AMPO_50 0.858
## 2 LBA112 AMPO_50 0.602
## 3 LBA20 AMPO_50 0.484
## 4 LMB2 AMPO_50 0.824
## 5 LMD1 AMPO_50 0.738
## 6 LME1 AMPO_50 0.782
## 7 LMI1 AMPO_50 0.852
## 8 LMI11 AMPO_50 0.854
## 9 LMI13 AMPO_50 0.718
## 10 LMJ1 AMPO_50 0.0378
## 11 LML1 AMPO_50 0.357
## 12 LMO1 AMPO_50 0.707
## 13 LMS1 AMPO_50 0.929
## 14 LMX3 AMPO_50 0.773
## 15 LMZ1 AMPO_50 0.972
## 16 LPA2 AMPO_50 0.162
## 17 LRH11 AMPO_50 0.809
## 18 LSP13 AMPO_50 0.759
## 19 LWO6 AMPO_50 0.818
To compare the tolerance among different bacterial strains, we use the tolerance index (TI). This tolerance index is calculated from the area under the curve of the AUC of each strain in the different concentrations of the compounds, as further normalization the normalized tolerance index is calculated from AUC_norm instead of AUC. Accordingly, a strain with TI_norm = 1 is completely tolerant to the compound in each concentration (not inhibited by the compound). Tolerance index is calculated for each compound separately using results_AUC from the respective compound.
TI MBOA
Tolerance index of tolerant and susceptible strain in MBOA
TI MBOA without high concentrations
correlation TI with TI low
AUC_tolind_MBOA_low_cor <- left_join(AUC_tolind_MBOA_low %>% dplyr::rename(TI_norm_low = TI_norm) %>%
dplyr::select(Strain, Replicate, Run, TI_norm_low),
AUC_tolind_MBOA %>% dplyr::select(Strain, Replicate, Run, Family, TI_norm),
join_by(Strain == Strain, Replicate == Replicate, Run == Run))
TI_low_cor <- AUC_tolind_MBOA_low_cor %>%
filter(Strain != "NBC") %>%
# filter(Family != "Xanthomonadaceae") %>%
# mutate(Run = gsub("R4", "R1", Run)) %>%
ggplot(aes(x = TI_norm, y = TI_norm_low)) +
geom_point(aes(colour = Family), alpha = 0.5, show.legend = FALSE) +
geom_smooth(method = "lm", color="black", formula = y ~ x) +
# xlim(0, 1)+
# ylim(0, 1)+
geom_smooth(method = "lm", color="black", formula = y ~ x) +
stat_cor(method = "pearson", label.x = 0.4, label.y = 0.8, cex = 15/.pt) +
scale_colour_manual(values = results_AUC_all_level_cols_Family) +
theme_bw() +
labs(x = "TI",
y = "TI low")
TI_low_cor
# ggsave(plot = TI_low_cor, filename = "TI_low_cor.pdf", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
# ggsave(plot = TI_low_cor, filename = "TI_low_cor.svg", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
TI MBOA at two concentrations (500 and 2500 μM)
correlation TI with TI low
AUC_tolind_MBOA_2conc_cor <- left_join(AUC_tolind_MBOA_2_conc %>% dplyr::rename(TI_norm_2conc = TI_norm) %>%
dplyr::select(Strain, Replicate, Run, TI_norm_2conc),
AUC_tolind_MBOA %>% dplyr::select(Strain, Replicate, Run, Family, TI_norm),
join_by(Strain == Strain, Replicate == Replicate, Run == Run))
TI_2conc_cor <- AUC_tolind_MBOA_2conc_cor %>%
filter(Strain != "NBC") %>%
# filter(Family != "Xanthomonadaceae") %>%
# mutate(Run = gsub("R4", "R1", Run)) %>%
ggplot(aes(x = TI_norm, y = TI_norm_2conc)) +
geom_point(aes(colour = Family), alpha = 0.5, show.legend = FALSE) +
geom_smooth(method = "lm", color="black", formula = y ~ x) +
xlim(0, 1.3)+
ylim(0, 1.3)+
geom_smooth(method = "lm", color="black", formula = y ~ x) +
stat_cor(method = "pearson", label.x = 0.2, label.y = 1.2, cex = 15/.pt) +
scale_colour_manual(values = results_AUC_all_level_cols_Family) +
theme_bw() +
labs(x = "TI",
y = "TI 2conc")
TI_2conc_cor
## Warning: Removed 2 rows containing non-finite values (`stat_smooth()`).
## Removed 2 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 2 rows containing non-finite values (`stat_cor()`).
## Warning: Removed 2 rows containing missing values (`geom_point()`).
# ggsave(plot = TI_2conc_cor, filename = "TI_2conc_cor.pdf", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
# #
# ggsave(plot = TI_2conc_cor, filename = "TI_2conc_cor.svg", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
AUC MBOA 625 μM
TI BOA
TI AMPO
AUC DIMBOA-Glc 2500 uM
TI DIMBOA-Glc
correlation TI with TI low
AUC_tolind_AUC_DMG_cor <- left_join(AUC_tolind_DMG %>%
dplyr::select(Strain, Replicate, Run, TI_norm),
results_AUC_all %>%
filter(Run %in% c("R2")) %>%
filter(Chem %in% "DMG") %>%
filter(Conc %in% "2500") %>%
filter(AUC_norm < 2) %>%
filter(Run %in% "R2") %>%
filter(!Strain %in% "NBC") %>%
dplyr::select(Strain, Replicate, Run, Family, AUC_norm),
join_by(Strain == Strain, Replicate == Replicate, Run == Run))
DMG_TI_AUC_cor <- AUC_tolind_AUC_DMG_cor %>%
filter(Strain != "NBC") %>%
filter(!AUC_norm %in% NA) %>%
# filter(Family != "Xanthomonadaceae") %>%
# mutate(Run = gsub("R4", "R1", Run)) %>%
ggplot(aes(x = TI_norm, y = AUC_norm)) +
geom_point(aes(colour = Family), alpha = 0.2, show.legend = FALSE) +
geom_smooth(method = "lm", color="black", formula = y ~ x) +
# xlim(0, 1)+
# ylim(0, 1)+
stat_cor(method = "pearson", label.x = 0.4, label.y = 1.8, cex = 15/.pt) +
scale_colour_manual(values = results_AUC_all_level_cols_Family) +
theme_bw() +
labs(x = "TI",
y = "AUC")
DMG_TI_AUC_cor
# ggsave(plot = DMG_TI_AUC_cor, filename = "DMG_TI_AUC_cor.pdf", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
#
# ggsave(plot = DMG_TI_AUC_cor, filename = "DMG_TI_AUC_cor.svg", width = 9, height = 9, dpi = 300, scale = 1, units = "cm")
TI APO
p-value MBOA
p-value BOA
p-value AMPO
p-value DIMBOA-Glc
p-value APO
To investigate if the tolerance of maize root bacteria to different benzoxazinonids and aminophenoxazinones depend on each other, we correlated the TIs of all bacteria in the different chemicals with each other.
MBOA ~ AMPO
MBOA ~ BOA
APO ~ AMPO
BOA ~ APO
MBOA ~ DIMBOA-Glc
| MBOA_type | MBOA | BOA_type | BOA | AMPO_type | AMPO | APO_type | APO |
|---|---|---|---|---|---|---|---|
| intermediate | 18 | intermediate | 30 | intermediate | 4 | intermediate | 7 |
| susceptible | 22 | susceptible | 6 | susceptible | 4 | susceptible | 9 |
| tolerant | 12 | tolerant | 16 | tolerant | 44 | tolerant | 36 |
| Compound | p.value |
|---|---|
| MBOA | 0.00010910830639201 |
| BOA | 2.5851643475067e-05 |
| AMPO | 0.0559324299277804 |
| APO | 0.00723728836215448 |
Calculate density increase: substract initial density from density of each time point
First the density increase in the medium control plate is plotted to check that there was no general contamination detected in the experiment.
Next the growth of all strains in the control treatment and the no bacteria control is checked.
Growth of individual strains in different concentrations of MBOA.
Some strains did not grew and were therefore excluded from the analysis. In both runs: Root1294 Sphigomonas, Root420 Flavobacterium, Root482 Rhizobium, Root559 Lysobacter, Root630 Pseudoxanthomonas, in run 1: Root318D1 Variovorax, in run 2: Root166 Microbacterium.
To quantify the total bacterial growth over time, we calculate the total area under the curve. This is done with the function “auc()” For comparison between treatments, the total AUC (AUC_raw) is normalized with the AUC of the strain grown in the control treatment (no chemicals added, just normal growth media with DMSO). The AUC_norm is used for all further analysis, plotting and calculations.
To compare the tolerance among different bacterial strains, we use the tolerance index. The tolerance index is calculated from the area under the curve of the AUC of each strain in the different concentrations of the compounds, as further normalization the tolerance index is calculated from AUC_norm instead of AUC. Accordingly, a strain with TI_norm = 1 is completely tolerant to the compound in each concentration (not inhibited by the compound). Tolerance index is calculated for each compound separately using results_AUC from the respective compound.
p-value MBOA
fisher exact
| Compound | p.value |
|---|---|
| MBOA | 0.237658243023882 |
We mapped the 16s rRNA sequences to the microbiome dataset published by Hu et al. 2018. In this study, maize wild-type plants (producing BXs) were grown along with bx1 mutant plants in the field. Then the plants were harvested and the root, the rhizosphere and the soil compartment were sequenced. The bacterial community profiles of wild-type and bx1 mutant plants differed significantely. We found that most of the MRB isolates map to taxonomic units (OTUs) in the dataset and many of them map to abundant OTUs. Here we investigate the BX-dependent colonization of these OTUs in the microbiome dataset and correlate those with the tolerance index of the strains.
In this graph the log2foldchange of OTUs on WT/bx1 roots in the field is visualized.
Stats was done like this: iso_abundance_single_data_long %>% group_by(OTU, compartment) %>% do(tidy(t.test(Abundance~genotype, data=.))) %>% add_significance(“p.value”) %>% dplyr::select(OTU, p.value, p.value.signif)
MBOA root
MBOA rhizosphere
BOA
AMPO
APO
DIMBOA-Glc
DIMBOA-Glc
sessionInfo()
## R version 4.3.1 (2023-06-16)
## Platform: x86_64-apple-darwin20 (64-bit)
## Running under: macOS Ventura 13.3.1
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## time zone: Europe/Zurich
## tzcode source: internal
##
## attached base packages:
## [1] grid stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] gtable_0.3.4 ggbeeswarm_0.7.2 ggpmisc_0.5.4-1 ggpp_0.5.4
## [5] ggpubr_0.6.0 ggforce_0.4.1 ggplot2_3.4.3 ggthemes_4.2.4
## [9] rstatix_0.7.2 purrr_1.0.1 readr_2.1.4 stringr_1.5.0
## [13] tidyr_1.3.0 dplyr_1.1.2 broom_1.0.5 lubridate_1.9.2
## [17] readxl_1.4.2 magrittr_2.0.3 emmeans_1.8.6 multcomp_1.4-25
## [21] TH.data_1.1-2 MASS_7.3-60 survival_3.5-5 mvtnorm_1.2-2
## [25] lmerTest_3.1-3 lme4_1.1-33 Matrix_1.5-4.1 metacoder_0.3.6
## [29] MESS_0.5.12
##
## loaded via a namespace (and not attached):
## [1] polynom_1.4-1 sandwich_3.0-2 rlang_1.1.1
## [4] ggridges_0.5.4 compiler_4.3.1 mgcv_1.8-42
## [7] vctrs_0.6.3 quantreg_5.95 pkgconfig_2.0.3
## [10] crayon_1.5.2 fastmap_1.1.1 backports_1.4.1
## [13] labeling_0.4.2 utf8_1.2.3 ggstance_0.3.6
## [16] rmarkdown_2.22 tzdb_0.4.0 haven_2.5.3
## [19] nloptr_2.0.3 MatrixModels_0.5-1 xfun_0.39
## [22] cachem_1.0.8 labelled_2.12.0 jsonlite_1.8.5
## [25] highr_0.10 tweenr_2.0.2 R6_2.5.1
## [28] bslib_0.5.0 stringi_1.7.12 car_3.1-2
## [31] boot_1.3-28.1 jquerylib_0.1.4 cellranger_1.1.0
## [34] numDeriv_2016.8-1.1 estimability_1.4.1 Rcpp_1.0.11
## [37] knitr_1.43 zoo_1.8-12 splines_4.3.1
## [40] timechange_0.2.0 tidyselect_1.2.0 rstudioapi_0.14
## [43] abind_1.4-5 yaml_2.3.7 codetools_0.2-19
## [46] lattice_0.21-8 tibble_3.2.1 plyr_1.8.8
## [49] withr_2.5.0 coda_0.19-4 evaluate_0.21
## [52] polyclip_1.10-4 pillar_1.9.0 carData_3.0-5
## [55] generics_0.1.3 hms_1.1.3 munsell_0.5.0
## [58] scales_1.2.1 minqa_1.2.5 xtable_1.8-4
## [61] glue_1.6.2 clipr_0.8.0 tools_4.3.1
## [64] SparseM_1.81 ggsignif_0.6.4 forcats_1.0.0
## [67] colorspace_2.1-0 nlme_3.1-162 ggformula_0.10.4
## [70] beeswarm_0.4.0 vipor_0.4.5 cli_3.6.1
## [73] fansi_1.0.4 rematch_1.0.1 mosaicCore_0.9.2.1
## [76] geepack_1.3.9 sass_0.4.6 digest_0.6.31
## [79] farver_2.1.1 htmltools_0.5.5 lifecycle_1.0.3
## [82] geeM_0.10.1